<!DOCTYPE html>
<html lang="en" class="js csstransforms3d">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta name="generator" content="Hugo 0.20.7" />
    <meta name="description" content="">


    <link rel="shortcut icon" href="http://shardingjdbc.io/document/legacy/2.x/cn/img/favicon.png" type="image/x-icon" />

    
    <title>FAQ</title>
    <link href="http://ovfotjrsi.bkt.clouddn.com/docs/css/nucleus.css" rel="stylesheet">
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
    <link href="http://ovfotjrsi.bkt.clouddn.com/docs/css/theme.css" rel="stylesheet">
    <link href="http://ovfotjrsi.bkt.clouddn.com/docs/css/hugo-theme.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
    <style type="text/css">:root #header + #content > #left > #rlblock_left
    {display:none !important;}</style>
    <link rel="stylesheet" href="http://cdn.bootcss.com/highlight.js/9.8.0/styles/monokai-sublime.min.css">
<link rel="stylesheet" href="http://ovfotjrsi.bkt.clouddn.com/docs/css/style.css">
  </head>
  <body class="" data-url="/01-start/faq/">
    
    <nav id="sidebar">
  <div id="header-wrapper">
    <div id="header">
      <img src="http://ovfotjrsi.bkt.clouddn.com/docs/img/sharding-jdbc.png" />
    </div>
</div>
  <div class="highlightable">
    <ul class="topics">
      
        
        
          
          
            
          
        
          
          
            
          
        
          
          
            
          
        
          
          
            
          
        
        
        
          
        
          
        
          
        
          
        
      
      
      
      

      
      
      
        
          
          
            
          
        
      
      
      

      <li class="dd-item  " data-nav-id="/00-overview/">
        <a href="http://shardingjdbc.io/document/legacy/2.x/cn/00-overview/">
          <span>
            
              <b>0. </b>
            
             概览
            
           </span>
        </a>
        
        <ul>
          
            <li class="dd-item " data-nav-id="/00-overview/intro/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/00-overview/intro/">
                <span>简介     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/00-overview/news/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/00-overview/news/">
                <span>新闻     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/00-overview/contribution/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/00-overview/contribution/">
                <span>贡献代码     </i></span>
              </a>
            </li>
          
        </ul>
        
      </li>
      
      
      

      
      
      
        
          
          
            
          
        
      
      
      

      <li class="dd-item  parent" data-nav-id="/01-start/">
        <a href="http://shardingjdbc.io/document/legacy/2.x/cn/01-start/">
          <span>
            
              <b>1. </b>
            
             起航
            
           </span>
        </a>
        
        <ul>
          
            <li class="dd-item " data-nav-id="/01-start/quick-start/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/01-start/quick-start/">
                <span>快速入门     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/01-start/code-demo/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/01-start/code-demo/">
                <span>使用示例     </i></span>
              </a>
            </li>
          
            <li class="dd-item active" data-nav-id="/01-start/faq/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/01-start/faq/">
                <span>FAQ     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/01-start/features/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/01-start/features/">
                <span>详细功能列表     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/01-start/limitations/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/01-start/limitations/">
                <span>使用限制     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/01-start/sql-supported/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/01-start/sql-supported/">
                <span>SQL支持详细列表     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/01-start/stress-test/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/01-start/stress-test/">
                <span>性能测试报告     </i></span>
              </a>
            </li>
          
        </ul>
        
      </li>
      
      
      

      
      
      
        
          
          
            
          
        
      
      
      

      <li class="dd-item  " data-nav-id="/02-guide/">
        <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/">
          <span>
            
              <b>2. </b>
            
             使用指南
            
           </span>
        </a>
        
        <ul>
          
            <li class="dd-item " data-nav-id="/02-guide/concepts/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/concepts/">
                <span>核心概念     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/sharding/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/sharding/">
                <span>分库分表     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/master-slave/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/master-slave/">
                <span>读写分离     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/config_domain/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/config_domain/">
                <span>配置域模型     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/configuration/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/configuration/">
                <span>配置手册     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/orchestration/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/orchestration/">
                <span>编排治理     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/hint-sharding-value/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/hint-sharding-value/">
                <span>强制路由     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/key-generator/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/key-generator/">
                <span>分布式主键     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/transaction/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/transaction/">
                <span>事务支持     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/subquery/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/subquery/">
                <span>分页及子查询     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/test-framework/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/test-framework/">
                <span>测试引擎     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/apm/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/apm/">
                <span>应用性能监控     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/02-guide/sharding-jdbc-server/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/sharding-jdbc-server/">
                <span>Sharding-JDBC-Server     </i></span>
              </a>
            </li>
          
        </ul>
        
      </li>
      
      
      

      
      
      
        
          
          
            
          
        
      
      
      

      <li class="dd-item  " data-nav-id="/03-design/">
        <a href="http://shardingjdbc.io/document/legacy/2.x/cn/03-design/">
          <span>
            
              <b>3. </b>
            
             设计规划
            
           </span>
        </a>
        
        <ul>
          
            <li class="dd-item " data-nav-id="/03-design/architecture/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/03-design/architecture/">
                <span>架构设计     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/03-design/module/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/03-design/module/">
                <span>模块说明     </i></span>
              </a>
            </li>
          
            <li class="dd-item " data-nav-id="/03-design/roadmap/">
              <a href="http://shardingjdbc.io/document/legacy/2.x/cn/03-design/roadmap/">
                <span>未来线路规划     </i></span>
              </a>
            </li>
          
        </ul>
        
      </li>
      
      
    </ul>
    <hr>
     
  </div>
</nav>

        <section id="body">
        <div id="overlay"></div>

        <div class="padding highlightable">

            <div id="top-bar">
              
              <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
                  <span id="sidebar-toggle-span">
                      <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
                        <i class="fa fa-bars"></i>
                      </a>
                  </span>
                
                <span id="toc-menu"><a href=""><i class="fa fa-list-alt"></i></a></span>
                
                
                  
                  
                  
                    
                    
                <a href="http://shardingjdbc.io/document/legacy/2.x/cn/01-start/" itemprop="url"><span itemprop="title">起航</span></a> <i class="fa fa-angle-right"></i>
                    
                  
                
                <span itemprop="title"> FAQ</span>
              </div>
              
                  <div class="progress">
    <div class="wrapper">
<nav id="TableOfContents">
<ul>
<li>
<ul>
<li>
<ul>
<li><a href="#1-阅读源码时为什么会出现编译错误">1. 阅读源码时为什么会出现编译错误?</a></li>
<li><a href="#2-cloud-not-resolve-placeholder-in-string-value-异常的解决方法">2. Cloud not resolve placeholder &hellip; in string value &hellip;异常的解决方法?</a></li>
<li><a href="#3-inline表达式返回结果为何出现浮点数">3. inline表达式返回结果为何出现浮点数？</a></li>
<li><a href="#4-使用proxool时分库结果不正确">4. 使用Proxool时分库结果不正确？</a></li>
<li><a href="#5-使用sqlsever和postgresql时-聚合列不加别名会抛异常">5. 使用SQLSever和PostgreSQL时，聚合列不加别名会抛异常？</a></li>
<li><a href="#6-1-5-x之前支持or-1-5-x之后不再支持-是什么原因">6. 1.5.x之前支持OR，1.5.x之后不再支持，是什么原因？</a></li>
<li><a href="#7-如果sql在sharding-jdbc中执行不正确-该如何调试">7. 如果SQL在Sharding-JDBC中执行不正确，该如何调试？</a></li>
<li><a href="#8-如果只有部分数据库分库分表-是否需要将不分库分表的表也配置在分片规则中">8. 如果只有部分数据库分库分表，是否需要将不分库分表的表也配置在分片规则中？</a></li>
<li><a href="#9-sharding-jdbc提供的默认分布式自增主键策略为什么是不连续的-且尾数大多为偶数">9. Sharding-JDBC提供的默认分布式自增主键策略为什么是不连续的，且尾数大多为偶数？</a></li>
<li><a href="#10-指定了泛型为long的singlekeytableshardingalgorithm-遇到classcastexception-integer-can-not-cast-to-long">10. 指定了泛型为Long的SingleKeyTableShardingAlgorithm，遇到ClassCastException: Integer can not cast to Long?</a></li>
<li><a href="#11-sharding-jdbc除了支持自带的分布式自增主键之外-还能否支持原生的自增主键">11. Sharding-JDBC除了支持自带的分布式自增主键之外，还能否支持原生的自增主键？</a></li>
<li><a href="#12-oracle数据库使用timestamp类型的order-by语句抛出异常提示-order-by-value-must-implements-comparable">12. Oracle数据库使用Timestamp类型的Order By语句抛出异常提示“Order by value must implements Comparable”?</a></li>
<li><a href="#13-使用spring命名空间时找不到xsd">13. 使用Spring命名空间时找不到xsd?</a></li>
</ul></li>
</ul></li>
</ul>
</nav>
    </div>
</div>

              

            </div>
            
              <div id="body-inner">
                
                <h1>FAQ</h1>
                



<h3 id="1-阅读源码时为什么会出现编译错误">1. 阅读源码时为什么会出现编译错误?</h3>

<p>回答：</p>

<p>Sharding-JDBC使用lombok实现极简代码。关于更多使用和安装细节，请参考<a href="https://projectlombok.org/download.html">lombok官网</a>。</p>

<p>sharding-jdbc-orchestration模块需要先执行<code>mvn install</code>命令，根据protobuf文件生成gRPC相关的java文件。</p>

<h3 id="2-cloud-not-resolve-placeholder-in-string-value-异常的解决方法">2. Cloud not resolve placeholder &hellip; in string value &hellip;异常的解决方法?</h3>

<p>回答：</p>

<p>在Spring的配置文件中，由于inline表达式使用了Groovy语法，Groovy语法的变量符与Spring默认占位符同为<code>${}</code>，因此需要在配置文件中增加：</p>

<pre><code class="language-xml">&lt;context:property-placeholder location=&quot;classpath:conf/conf.properties&quot; ignore-unresolvable=&quot;true&quot; /&gt;
</code></pre>

<h3 id="3-inline表达式返回结果为何出现浮点数">3. inline表达式返回结果为何出现浮点数？</h3>

<p>回答：</p>

<p>Java的整数相除结果是整数，但是对于inline表达式中的Groovy语法则不同，整数相除结果是浮点数。
想获得除法整数结果需要将A/B改为A.intdiv(B)。</p>

<h3 id="4-使用proxool时分库结果不正确">4. 使用Proxool时分库结果不正确？</h3>

<p>回答：</p>

<p>使用Proxool配置多个数据源时，应该为每个数据源设置alias，因为Proxool在获取连接时会判断连接池中是否包含已存在的alias，不配置alias会造成每次都只从一个数据源中获取连接。</p>

<p>以下是Proxool源码中ProxoolDataSource类getConnection方法的关键代码：</p>

<pre><code class="language-java">    if(!ConnectionPoolManager.getInstance().isPoolExists(this.alias)) {
        this.registerPool();
    }
</code></pre>

<p>更多关于alias使用方法请参考<a href="http://proxool.sourceforge.net/configure.html">Proxool官网</a>。</p>

<p>PS:sourceforge网站需要翻墙访问。</p>

<h3 id="5-使用sqlsever和postgresql时-聚合列不加别名会抛异常">5. 使用SQLSever和PostgreSQL时，聚合列不加别名会抛异常？</h3>

<p>回答：</p>

<p>SQLServer和PostgreSQL获取不加别名的聚合列会改名。例如，如下SQL：</p>

<pre><code class="language-sql">SELECT SUM(num), SUM(num2) FROM table_xxx;
</code></pre>

<p>SQLServer获取到的列为空字符串和(2)，PostgreSQL获取到的列为空sum和sum(2)。这将导致Sharding-JDBC在结果归并时无法找到相应的列而出错。</p>

<p>正确的SQL写法应为：</p>

<pre><code class="language-sql">SELECT SUM(num) AS sum_num, SUM(num2) AS sum_num2 FROM table_xxx;
</code></pre>

<h3 id="6-1-5-x之前支持or-1-5-x之后不再支持-是什么原因">6. 1.5.x之前支持OR，1.5.x之后不再支持，是什么原因？</h3>

<p>回答：</p>

<p>1.5.x之前对OR支持并不完善，在复杂场景会有问题。OR的复杂度不仅在于解析，更在于路由。而且非常不适合在分布式数据库中使用，会极大的影响性能。OR是需要将OR和AND的组合拆解成全AND，才可以真正的执行SQL。
举例说明：</p>

<pre><code class="language-sql">WHERE (a=? OR b=?) AND c=?
</code></pre>

<p>必须拆解为</p>

<pre><code class="language-sql">WHERE a=? AND c=?
WHERE b=? AND c=?
</code></pre>

<p>两条语句才能执行。</p>

<p>再举一个具体的例子：</p>

<pre><code class="language-sql">WHERE id=1 OR status=‘OK’
</code></pre>

<p>这样的SQL，如果id是分片键，应该如何处理呢？
首先，需要路由到id=1的库或表，单表获取即可。
其次，因为有OR，需要在所有的数据库和表中全路由，取出所有的status=‘OK’的数据。
最后，将两种数据归并。
因此，SQL必须拆为两条，一条为WHERE id=1，另一条为status=‘OK’，而且他们的分片路由方式截然不同。</p>

<p>如果考虑到很多OR和AND的组合就更加复杂，必须组成一个多维递归的树结构。这种性能对于分布式数据库无法接受，也不可控，因此Sharding-JDBC选择不对OR进行支持。</p>

<h3 id="7-如果sql在sharding-jdbc中执行不正确-该如何调试">7. 如果SQL在Sharding-JDBC中执行不正确，该如何调试？</h3>

<p>回答：</p>

<p>Sharding-JDBC 1.5.0版本之后提供了sql.show的配置，可以将Sharding-JDBC从解析上下文，到改写后的SQL以及最终路由至的数据源的细节信息全部打印至info日志。
sql.show配置默认关闭，如果需要请通过配置开启。详情请参见<a href="http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/configuration/">配置手册</a>。</p>

<h3 id="8-如果只有部分数据库分库分表-是否需要将不分库分表的表也配置在分片规则中">8. 如果只有部分数据库分库分表，是否需要将不分库分表的表也配置在分片规则中？</h3>

<p>回答：</p>

<p>是的。因为Sharding-JDBC是将多个数据源合并为一个统一的逻辑数据源。因此即使不分库分表的部分，不配置分片规则Sharding-JDBC即无法精确的断定应该路由至哪个数据源。
但是Sharding-JDBC提供了两种变通的方式，有助于简化配置。</p>

<p>方法1：配置default-data-source，凡是在默认数据源中的表可以无需配置在分片规则中，Sharding-JDBC将在找不到分片数据源的情况下将表路由至默认数据源。</p>

<p>方法2：将不参与分库分表的数据源独立于Sharding-JDBC之外，在应用中使用多个数据源分别处理分片和不分片的情况。</p>

<h3 id="9-sharding-jdbc提供的默认分布式自增主键策略为什么是不连续的-且尾数大多为偶数">9. Sharding-JDBC提供的默认分布式自增主键策略为什么是不连续的，且尾数大多为偶数？</h3>

<p>回答：</p>

<p>Sharding-JDBC采用snowflake算法作为默认的分布式分布式自增主键策略，用于保证分布式的情况下可以无中心化的生成不重复的自增序列。因此自增主键可以保证递增，但无法保证连续。</p>

<p>而snowflake算法的最后4位是在同一毫秒内的访问递增值。因此，如果毫秒内并发度不高，最后4位为零的几率则很大。因此并发度不高的应用生成偶数主键的几率会更高。</p>

<h3 id="10-指定了泛型为long的singlekeytableshardingalgorithm-遇到classcastexception-integer-can-not-cast-to-long">10. 指定了泛型为Long的SingleKeyTableShardingAlgorithm，遇到ClassCastException: Integer can not cast to Long?</h3>

<p>回答：</p>

<p>必须确保数据库表中该字段和分片算法该字段类型一致，如：数据库中该字段类型为int(11)，泛型所对应的分片类型应为Integer，如果需要配置为Long类型，请确保数据库中该字段类型为bigint。</p>

<h3 id="11-sharding-jdbc除了支持自带的分布式自增主键之外-还能否支持原生的自增主键">11. Sharding-JDBC除了支持自带的分布式自增主键之外，还能否支持原生的自增主键？</h3>

<p>回答：是的，可以支持。但原生自增主键有使用限制，即不能将原生自增主键同时作为分片键使用。</p>

<p>由于Sharding-JDBC并不知晓数据库的表结构，而原生自增主键是不包含在原始SQL中内的，因此Sharding-JDBC无法将该字段解析为分片字段。如自增主键非分片键，则无需关注，可正常返回；若自增主键同时作为分片键使用，Sharding-JDBC无法解析其分片值，导致SQL路由至多张表，从而影响应用的正确性。</p>

<p>而原生自增主键返回的前提条件是INSERT SQL必须最终路由至一张表，因此，面对返回多表的INSERT SQL，自增主键则会返回零。</p>

<h3 id="12-oracle数据库使用timestamp类型的order-by语句抛出异常提示-order-by-value-must-implements-comparable">12. Oracle数据库使用Timestamp类型的Order By语句抛出异常提示“Order by value must implements Comparable”?</h3>

<p>回答：</p>

<p>针对上面问题解决方式有两种：
1.配置启动JVM参数“-oracle.jdbc.J2EE13Compliant=true”
2.通过代码在项目初始化时设置System.getProperties().setProperty(&ldquo;oracle.jdbc.J2EE13Compliant&rdquo;, &ldquo;true&rdquo;);</p>

<p>原因如下:</p>

<p>com.dangdang.ddframe.rdb.sharding.merger.orderby.OrderByValue#getOrderValues()方法如下:</p>

<pre><code class="language-java">    private List&lt;Comparable&lt;?&gt;&gt; getOrderValues() throws SQLException {
        List&lt;Comparable&lt;?&gt;&gt; result = new ArrayList&lt;&gt;(orderByItems.size());
        for (OrderItem each : orderByItems) {
            Object value = resultSet.getObject(each.getIndex());
            Preconditions.checkState(null == value || value instanceof Comparable, &quot;Order by value must implements Comparable&quot;);
            result.add((Comparable&lt;?&gt;) value);
        }
        return result;
    }
</code></pre>

<p>使用了resultSet.getObject(int index)方法，针对TimeStamp oracle会根据oracle.jdbc.J2EE13Compliant属性判断返回java.sql.TimeStamp还是自定义oralce.sql.TIMESTAMP
详见ojdbc源码oracle.jdbc.driver.TimestampAccessor#getObject(int var1)方法：</p>

<pre><code class="language-java">    Object getObject(int var1) throws SQLException {
        Object var2 = null;
        if(this.rowSpaceIndicator == null) {
            DatabaseError.throwSqlException(21);
        }

        if(this.rowSpaceIndicator[this.indicatorIndex + var1] != -1) {
            if(this.externalType != 0) {
                switch(this.externalType) {
                case 93:
                    return this.getTimestamp(var1);
                default:
                    DatabaseError.throwSqlException(4);
                    return null;
                }
            }

            if(this.statement.connection.j2ee13Compliant) {
                var2 = this.getTimestamp(var1);
            } else {
                var2 = this.getTIMESTAMP(var1);
            }
        }

        return var2;
    }
</code></pre>

<h3 id="13-使用spring命名空间时找不到xsd">13. 使用Spring命名空间时找不到xsd?</h3>

<p>回答：</p>

<p>Spring命名空间使用规范并未强制要求将xsd文件部署至公网地址，但考虑到部分用户的需求，我们也将相关xsd文件部署至Sharding-JDBC官网。</p>

<p>实际上sharding-jdbc-core-config-spring的jar包中META-INF\spring.schemas配置了xsd文件的位置：META-INF\namespace\sharding.xsd和META-INF\namespace\master-slave.xsd，只需确保jar包中该文件存在即可。</p>


      
      
      </div>
    </div>

    

    <div id="navigation">
        
        <a class="nav nav-prev" href="http://shardingjdbc.io/document/legacy/2.x/cn/01-start/code-demo/"> <i class="fa fa-chevron-left"></i></a>
        <a class="nav nav-next" href="http://shardingjdbc.io/document/legacy/2.x/cn/01-start/features/" style="margin-right: 0px;"><i class="fa fa-chevron-right"></i></a>
    </div>

    </section>
    <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
      <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
    </div>
    <script src="http://ovfotjrsi.bkt.clouddn.com/docs/js/clipboard.min.js"></script>
    <script src="http://ovfotjrsi.bkt.clouddn.com/docs/js/perfect-scrollbar.min.js"></script>
    <script src="http://ovfotjrsi.bkt.clouddn.com/docs/js/perfect-scrollbar.jquery.min.js"></script>
    <script src="http://ovfotjrsi.bkt.clouddn.com/docs/js/jquery.sticky-kit.min.js"></script>
    <script src="http://ovfotjrsi.bkt.clouddn.com/docs/js/featherlight.min.js"></script>
    <script src="http://ovfotjrsi.bkt.clouddn.com/docs/js/html5shiv-printshiv.min.js"></script>
    <script src="http://ovfotjrsi.bkt.clouddn.com/docs/js/highlight.pack.js"></script>
    <script>hljs.initHighlightingOnLoad();</script>
    <script src="http://ovfotjrsi.bkt.clouddn.com/docs/js/learn.js"></script>
    <script src="http://ovfotjrsi.bkt.clouddn.com/docs/js/hugo-learn.js"></script>
    <script src="http://cdn.bootcss.com/highlight.js/9.8.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>

  </body>
</html>

